home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
m_fnt16
/
s
/
about.doc
next >
Wrap
Text File
|
1994-06-01
|
8KB
|
186 lines
=== ABOUT M_FNT16 etc. ===
--- ・M_FNT16 について -----
このソフトの前身が、(知らない方が多いでしょうから) フリーソフトウェアコレクション7 に
収録されています. (\T_OS\MER_FNT)
12dotのシステムフォントを対象にしたものですが,やっていることはおなじで,
LOAD@でフォントファイルを丸ごと読み込んで 漢字コードから格納位置を計算する
ルーチンを作り, 複写なり表示なりを行っています.
F-BASIC386は,こういう大量のデータを扱うプログラムを簡単に組むことができ
ます.
前回のMER_FNT はテンキーなしキーボードの事を全く考えていませんでした。
それで今回は コマンドの指定キーを フルキーの方に持ってきてみました。
今回このファイルが収まっている M_FNT16 の他にも システムCDのフォントを
DOS/V 用に変換するソフト(SYM_DOSV) を応募します。 DOS/V機を持っている方で
宜しければ,ご覧ください。
--- ・FNT16 のフォントファイルの構造を説明すると -----
基本的に JIS コードで 32文字づつ
$3020 - $303f -+
$3120 - $313f |
$3220 - $323f |
. - |
$3e20 - $3e3f |
$3f20 - $3f3f -+- 下位1byte $20-$3f
$3040 - $305f -+
$3140 - $315f |
. - |
$3f40 - $3f5f -+- 下位1byte $40-$5f
$3060 - $307f -+
. - |
$3f60 - $3f7f -+- 下位1byte $60-$7f
といった順番なのですが($3020-$6f7f),
最初と最後だけ すこし入れ代わっています
- 格納順 - ( ) 括弧内は 削除
+--->[ $2820 - $283f ] ($2020 - $203f の位置) -+
| . |
| $2720 - $273f |
| +---------------+ |
| | $2060 - $207f | ($2820 - $283f の位置) |
| | . | |
| +->| $2760 - $217f | ($2f20 - $2f3f 〃 ) -+- 下位 $20-$3f の位置
| | +---------------+
| | $2040 - $205f -+
| | . |
| | $2740 - $275f |
| | |
| | $2840 - $285f -+ |
| | . | 多分 ゴミです。 |
| | $2f40 - $2f5f -+ ($2840 - $2f5f) -+- 下位 $40-$5f の位置
| | +---------------+
| +-<|($2060 - $207f)| -+ -+
| | | | |
| |($2760 - $277f)| | |
| +---------------+ | この範囲を削除 |
+---<[($2860 - $287f)] | ($2060 - $2f7f) |
| |
($2f60 - $2f7f) -+ -+- 下位 $60-$7f の位置 (削除)
同様に最後も
$7020 - $703f -+
. 第2JISは $7426 まで |
$7720 - $773f |
+---------------+ |
| $7060 - $707f | $7060 - $737f を使用 |
| . | |
+->| $7760 - $777f | $7460 - $777f は空き -+- 下位 $20-$3f の位置
| +---------------+
| $7040 - $705f -+
| . - $735f - $735f までフォントファイルに含まれる
| ($7740 - $775f) -+ |
| | |
| ($7840 - $785f) | |
| . | |
| ($7f40 - $7f5f) | -+- 下位 $40-$5f の位置
| +---------------+ |
+-<|($7060 - $707f)| | -+
| | | |
|($7760 - $777f)| | この範囲 はフォントファイル |
+---------------+ | ($7440 - $7f7f) |
($7860 - $787f) | に含まれない。 |
| |
($7f60 - $7f7f) -+ -+- 下位 $60-$7f の位置 (削除)
といった形で 合計 7808 文字, ドットパターンは get@ で配列に 取り込んだのと
同じ形で 1文字あたり32バイトですから, ファイルサイズが
7808 x 32 = 249856 バイト
となります。
これは, 私が個人的に解析しただけですので,間違いを含んでいる可能性があります.
--- ・ファイルネーム入力部分の利用 -----
プログラムの後半部にあるファイルネーム入力部分は 独立して利用できるよ
うにしてあります.(あまりきれいなプログラムではないが)
特徴として
・実際のカレントディレクトリを変更せずに 変更をしたかの様にファイル名を入力
することが出来ます.
・読込ファイルの指定のときは 対象ファイルの存在を確認し,
・書込で 同名のファイルがある時は バックアップファイルを作成します.
・type , del , ren といったファイル操作をプログラムを抜けずに行うことができ
ます
利用するときは
・エラー処理ルーチン(on error goto)が動いていないこと.(内部で利用している)
・画面のスクロール領域が25行以外のときは fl_scline に行数をセット
・変数,飛び先ラベルの頭に 'FL_' をさけること
・ファイルハンドルの #9 を使っていないこと
と言う条件で
・fl_rdwt (読込=0, 書込=1) と fl_def$ (省略時のファイル名) を セットして
・gosub *fl_name として呼び出せば
・fl_name$ にファイル名をセットして 戻ってきます.
・あとは入力の中止のときに fl_name$に '-'をセットして戻りますので,それを
確認して中止の処理をするルーチンを呼び出しの後に書いておきます.
問題点として
・書き込みファイル名指定の時, 戻ってきた段階ですでに 拡張子 '.bak' のファ
イルを削除して,同名ファイルの拡張子を '.bak' に リネームしているので
その後書き込みを中止とか ファイル名を再入力するとオリジナルが失われてし
まいます.(ファイルの拡張子が '.bak' になってしまっている)
・BASICでは現在のカレントディレクトリを読み取ることが出来ないので最初に
入力するときは相対ディレクトリでの入力になる.('.\'からの指定になる)
一度フルパスで入力すれば,そこから指定できるが
ドライブを変更すると再び相対ディレクトリからの指定になります.
(入力から推測出来る範囲でディレクトリを認識している)
この部分は特に, 他のプログラム部分もまったく自由に流用してもらって、
かまいませんので
--- ・b_num.awk d_num.awk について -----
これは私が F-BASIC386 でプログラムを組む時に使っている JGAWK のscript です。
私はある程度プログラムが大きくなると, テキストエディタと BASIC を往復して
開発をしますので
F-BASIC386 => テキストエディタ のとき (d_num.awk)
行番号を削除
行頭のスペースを4文字毎に TABコードに変換 (インデントをTABで操作するため)
文字列以外の BASICコマンドを 小文字に変換 (私の好み)
シングルクウォート 一つだけの行を空行に
といった処理が,
テキストエディタ => F-BASIC386 のとき (b_num.awk)
この逆の処理が,
必要になります。
JGAWK というものは入力されたテキストを スクリプトというファイルで指定した
変換処理をおこない, 結果を出力するものです. これは雑誌の付録のディスクや
通信などで入手できるはずです.
BASIC ソースファイルの 拡張子は 普通 '.BAS' ですので 私は テキストエデ
ィタで扱う時の ファイルの拡張子を '.BS' にしています
変換作業は, コンソールモードで
F-BASIC386 => テキストエディタ のとき
JGAWK -f D_NUM.AWK ファイル.BAS > ファイル.BS
テキストエディタ => F-BASIC386 のとき
JGAWK -f B_NUM.AWK ファイル.BS > ファイル.BAS
として行います。 ('ファイル' の部分を '%1' にしたバッチファイルを作っておくとよい
でしょう. )
--- ・その他 -----
前回の MER_FNT は Oh!fmTOWNS に写真入りで紹介して戴いて,非常に嬉しかった
のですが, あの写真では使い方が分かっていらっしゃらなかったようです。(笑)
今回は,カラーで紹介されても見栄えがするように作ってみました。
(あつかましいか(^-^;))
時間があれば、付け加えたい処理もあるのですが、 一通り使えるようになったし
余裕もないので、 (現在 2/19 am 5:46) これで完成とします。
正直いって, バージョンアップなどは, 考えていませんから..